From: Jonas Ã…dahl Date: Fri, 30 Sep 2022 07:26:55 +0000 (+0200) Subject: toplevel-size: Report zero bounds as infinite X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~9^2~221^2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=b3a3a6ceb19cdc00da0d201531cff93a059a86d3;p=gtk4.git toplevel-size: Report zero bounds as infinite Empty/zero bounds are sent by the Wayland compositor if there are no valid bounds to report, e.g. if there are no connected monitors. Report this to GTK, which uses this to clamp calculated sizes, as INT_MAX, so that clamping isn't done until there are actual valid bounds to clamp to. This fixes clients sometimes shrinking to their minimum size during hotplugs or after having suspended the session. --- diff --git a/gdk/gdktoplevelsize.c b/gdk/gdktoplevelsize.c index 186edb4d9b..b586ff2c62 100644 --- a/gdk/gdktoplevelsize.c +++ b/gdk/gdktoplevelsize.c @@ -32,6 +32,9 @@ G_DEFINE_POINTER_TYPE (GdkToplevelSize, gdk_toplevel_size) #define UNCONFIGURED_WIDTH 400 #define UNCONFIGURED_HEIGHT 300 +#define DEFAULT_BOUNDS_WIDTH INT_MAX +#define DEFAULT_BOUNDS_HEIGHT INT_MAX + void gdk_toplevel_size_init (GdkToplevelSize *size, int bounds_width, @@ -68,8 +71,15 @@ gdk_toplevel_size_get_bounds (GdkToplevelSize *size, g_return_if_fail (bounds_width); g_return_if_fail (bounds_height); - *bounds_width = size->bounds_width; - *bounds_height = size->bounds_height; + if (size->bounds_width > 0) + *bounds_width = size->bounds_width; + else + *bounds_width = DEFAULT_BOUNDS_WIDTH; + + if (size->bounds_height > 0) + *bounds_height = size->bounds_height; + else + *bounds_height = DEFAULT_BOUNDS_HEIGHT; } /**